home *** CD-ROM | disk | FTP | other *** search
- DEFINT A-Z
- DECLARE FUNCTION LENINPUT$ (FIELDLEN)
- DECLARE FUNCTION GETPRESS$ ()
-
- CLS
- LOCATE 10, 10
- VAR$ = LENINPUT$(10)
-
- FUNCTION GETPRESS$
- '--------------------------------------------------------------------------
-
- DO WHILE KEY$ = ""
- KEY$ = INKEY$
- LOOP
-
- GETPRESS$ = KEY$
-
- END FUNCTION
-
- FUNCTION LENINPUT$ (FIELDLEN)
- '--------------------------------------------------------------------------
- ORIGCOL = POS(0): ORIGROW = CSRLIN
- DIM LETTER(FIELDLEN) AS STRING
- COL = ORIGCOL: ROW = ORIGCOL
- DIM NULL AS STRING * 1
- CURSORTYPE = 3
- X = 1
-
- DO
- LOCATE ROW, COL, 1, CURSORTYPE, 4
- VAR$ = GETPRESS$
- IF LEN(VAR$) = 2 THEN 'extended key
-
- SELECT CASE VAR$
- CASE NULL + "K" 'left key
- IF X > 1 THEN
- COL = COL - 1
- X = X - 1
- END IF
- CASE NULL + "M" 'right key
- IF X < FIELDLEN THEN
- COL = COL + 1
- X = X + 1
- END IF
- CASE NULL + "G", NULL + "H", NULL + "I" 'home/up/pgup keys
- COL = ORIGCOL
- X = 1
- CASE NULL + "O", NULL + "P", NULL + "Q" 'end/down/pgdown keys
- COL = ORIGCOL + (FIELDLEN - 1)
- X = FIELDLEN
- CASE NULL + "R" 'insert
- IF CURSORTYPE = 3 THEN
- CURSORTYPE = 1
- ELSE
- CURSORTYPE = 3
- END IF
- CASE NULL + "D" 'F10
- EXIT DO
- CASE NULL + "S" 'delete
- FOR Z = ORIGROW + X TO ORIGCOL + (FIELDLEN - 1)
- LET$ = CHR$(SCREEN(ORIGROW, Z))
- LOCATE ORIGROW, Z - 1
- PRINT LET$
- NEXT Z
- LOCATE ORIGROW, ORIGCOL + (FIELDLEN - 1)
- PRINT " "
- END SELECT
-
- ELSE 'nomal key
-
- SELECT CASE VAR$
- CASE CHR$(27), CHR$(13) 'escape/enter
- EXIT DO
- CASE CHR$(9) 'tab
- IF X < FIELDLEN - 4 THEN
- COL = COL + 5
- X = X + 5
- ELSE
- COL = ORIGCOL + (FIELDLEN - 1)
- X = FIELDLEN
- END IF
- CASE CHR$(8) 'backspace
- IF COL > ORIGCOL THEN
- FOR Z = ORIGCOL + (X - 1) TO ORIGCOL + (FIELDLEN - 1)
- LET$ = CHR$(SCREEN(ORIGROW, Z))
- LOCATE ORIGROW, Z - 1
- PRINT LET$
- NEXT Z
- IF X > 1 THEN
- COL = COL - 1
- X = X - 1
- END IF
- LOCATE ORIGROW, ORIGCOL + (FIELDLEN - 1)
- PRINT " "
- END IF
- CASE ELSE 'a letter
- IF CURSORTYPE = 3 THEN 'overwrite
- PRINT VAR$
- IF X < FIELDLEN THEN
- COL = COL + 1
- X = X + 1
- END IF
- ELSE 'insert cursor
- COUNTER = ORIGCOL + (FIELDLEN - 1)
- IF COL < COUNTER THEN
- DO
- LET$ = CHR$(SCREEN(ORIGROW, (COUNTER - 1)))
- LOCATE ORIGROW, COUNTER
- PRINT LET$
- COUNTER = COUNTER - 1
- IF COUNTER = ORIGCOL + (X - 1) THEN
- EXIT DO
- END IF
- LOOP
- LOCATE ROW, COL
- PRINT VAR$
- ELSE
- PRINT VAR$
- IF X < FIELDLEN THEN
- COL = COL + 1
- X = X + 1
- END IF
- END IF
- IF X < FIELDLEN THEN
- COL = COL + 1
- X = X + 1
- END IF
- END IF
- END SELECT
-
- END IF
- LOOP
-
- TOTALWORD$ = ""
- FOR Z = 0 TO (FIELDLEN - 1)
- LETTER$ = CHR$(SCREEN(ROW, ORIGCOL + Z))
- TOTALWORD$ = TOTALWORD$ + LETTER$
- NEXT Z
-
- LENINPUT$ = RTRIM$(LTRIM$(TOTALWORD$))
-
- END FUNCTION
-
-